<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    function arr(root, voyage) {
      let ans = [], i = 0;
      function dfs(node) {
        if (!node) return true;
        const val = voyage[i++];
        // 判断当前节点的值是否和先序顺序一样
        if (val !== node.val) return false;
        // 左子节点的值和先序的值不相同，说明需要进行反转
        if (node.left && node.left.val !== voyage[i]) {
          // 记录反转点
          ans.push(val);
          // 模拟反转
          return dfs(node.right) && dfs(node.left);
        } else {
          // 无反转
          return dfs(node.left) && dfs(node.right);
        }
      }
      // 返回结果为false的话，说明不匹配，返回[-1]
      return dfs(root) ? ans : [-1];
    };
    console.log(arr(root = [1, 2], voyage = [2, 1]));
  </script>
</body>

</html>